Fix transparency handling with non-double-buffered drawing
authorAlexander Larsson <alexl@redhat.com>
Thu, 9 Feb 2012 20:09:44 +0000 (21:09 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 9 Feb 2012 20:14:07 +0000 (21:14 +0100)
commit251cffb638811b36779ea8364a63dd46b422dfbb
tree935903bb10e79dde19f612b215d186a6138d5ecb
parent5d9736fe13fe0178c725cf7ff04ad188cd4d5d1b
Fix transparency handling with non-double-buffered drawing

Sometimes we need to read back the window content into our double
buffer due to rendering a window with alpha when there is
no implicit paint or it has been flushed due to non-db drawing
before.

However, in this case we can't use gdk_cairo_set_source_window as
it might trigger an implicit paint flush as we detect what we
think is a direct non-double buffered window draw operation, which
will flush the implicit paint operation that we're just setting up.

To fix this we use the raw gdk_window_ref_impl_surface operation
to get the source surface.
gdk/gdkwindow.c